home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 4: GNU Archives / Linux Cubed Series 4 - GNU Archives.iso / gnu / cvs-1.8 / cvs-1 / cvs-1.8.1 / src / server.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-05-06  |  4.2 KB  |  139 lines

  1. /* Interface between the server and the rest of CVS.  */
  2.  
  3. /* Miscellaneous stuff which isn't actually particularly server-specific.  */
  4. #ifndef STDIN_FILENO
  5. #define STDIN_FILENO 0
  6. #define STDOUT_FILENO 1
  7. #define STDERR_FILENO 2
  8. #endif
  9.  
  10. #ifdef SERVER_SUPPORT
  11.  
  12. /*
  13.  * Nonzero if we are using the server.  Used by various places to call
  14.  * server-specific functions.
  15.  */
  16. extern int server_active;
  17. extern int server_expanding;
  18.  
  19. /* Server functions exported to the rest of CVS.  */
  20.  
  21. /* Run the server.  */
  22. extern int server PROTO((int argc, char **argv));
  23.  
  24. /* We have a new Entries line for a file.  TAG or DATE can be NULL.  */
  25. extern void server_register
  26.     PROTO((char *name, char *version, char *timestamp,
  27.          char *options, char *tag, char *date, char *conflict));
  28.  
  29. /*
  30.  * We want to nuke the Entries line for a file, and (unless
  31.  * server_scratch_entry_only is subsequently called) the file itself.
  32.  */
  33. extern void server_scratch PROTO((char *name));
  34.  
  35. /*
  36.  * The file which just had server_scratch called on it needs to have only
  37.  * the Entries line removed, not the file itself.
  38.  */
  39. extern void server_scratch_entry_only PROTO((void));
  40.  
  41. /*
  42.  * We just successfully checked in FILE (which is just the bare
  43.  * filename, with no directory).  REPOSITORY is the directory for the
  44.  * repository.
  45.  */
  46. extern void server_checked_in
  47.     PROTO((char *file, char *update_dir, char *repository));
  48.  
  49. extern void server_copy_file
  50.     PROTO((char *file, char *update_dir, char *repository, char *newfile));
  51.  
  52. /*
  53.  * We just successfully updated FILE (bare filename, no directory).
  54.  * REPOSITORY is the directory for the repository.  This is called
  55.  * after server_register or server_scratch, in the latter case the
  56.  * file is to be removed.  UPDATED indicates whether the file is now
  57.  * up to date (SERVER_UPDATED, yes, SERVER_MERGED, no, SERVER_PATCHED,
  58.  * yes, but file is a diff from user version to repository version).
  59.  */
  60. enum server_updated_arg4 {SERVER_UPDATED, SERVER_MERGED, SERVER_PATCHED};
  61. extern void server_updated
  62.     PROTO((char *file, char *update_dir, char *repository,
  63.          enum server_updated_arg4 updated, struct stat *,
  64.          unsigned char *checksum));
  65.  
  66. /* Set the Entries.Static flag.  */
  67. extern void server_set_entstat PROTO((char *update_dir, char *repository));
  68. /* Clear it.  */
  69. extern void server_clear_entstat PROTO((char *update_dir, char *repository));
  70.  
  71. /* Set or clear a per-directory sticky tag or date.  */
  72. extern void server_set_sticky PROTO((char *update_dir, char *repository,
  73.                        char *tag,
  74.                        char *date));
  75. /* Send Template response.  */
  76. extern void server_template PROTO ((char *, char *));
  77.  
  78. extern void server_update_entries
  79.     PROTO((char *file, char *update_dir, char *repository,
  80.          enum server_updated_arg4 updated));
  81.  
  82. enum progs {PROG_CHECKIN, PROG_UPDATE};
  83. extern void server_prog PROTO((char *, char *, enum progs));
  84. extern void server_cleanup PROTO((int sig));
  85.  
  86. #ifdef SERVER_FLOWCONTROL
  87. /* Pause if it's convenient to avoid memory blowout */
  88. extern void server_pause_check PROTO((void));
  89. #endif /* SERVER_FLOWCONTROL */
  90.  
  91. #endif /* SERVER_SUPPORT */
  92.  
  93. /* Stuff shared with the client.  */
  94. struct request
  95. {
  96.   /* Name of the request.  */
  97.   char *name;
  98.  
  99. #ifdef SERVER_SUPPORT
  100.   /*
  101.    * Function to carry out the request.  ARGS is the text of the command
  102.    * after name and, if present, a single space, have been stripped off.
  103.    */
  104.   void (*func) PROTO((char *args));
  105. #endif
  106.  
  107.   /* Stuff for use by the client.  */
  108.   enum {
  109.       /*
  110.        * Failure to implement this request can imply a fatal
  111.        * error.  This should be set only for commands which were in the
  112.        * original version of the protocol; it should not be set for new
  113.        * commands.
  114.        */
  115.       rq_essential,
  116.  
  117.       /* Some servers might lack this request.  */
  118.       rq_optional,
  119.  
  120.       /*
  121.        * Set by the client to one of the following based on what this
  122.        * server actually supports.
  123.        */
  124.       rq_supported,
  125.       rq_not_supported,
  126.  
  127.       /*
  128.        * If the server supports this request, and we do too, tell the
  129.        * server by making the request.
  130.        */
  131.       rq_enableme
  132.       } status;
  133. };
  134.  
  135. /* Table of requests ending with an entry with a NULL name.  */
  136. extern struct request requests[];
  137.  
  138. extern int use_unchanged;
  139.